A few miscellaneous syntactic symbols that haven't been previously covered are illustrated by this C++ example:
1: void Bass::play( int volume )
2: const
3: {
4: /* this line starts a multiline
5: * comment. This line should get `c' syntax */
6:
7: char* a_multiline_string = "This line starts a multiline \
8: string. This line should get `string' syntax.";
9:
10: note:
11: {
12: #ifdef LOCK
13: Lock acquire();
14: #endif // LOCK
15: slap_pop();
16: cout << "I played "
17: << "a note\n";
18: }
19: }
The lines to note in this example include:
func-decl-cont syntax.defun-block-intro and
comment-intro syntax. A syntactic element with
comment-intro has no anchor point — It is
always accompanied by another syntactic element which does have
one.c syntax.defun-block-intro. Note that the appearance of the
comment on lines 4 and 5 do not cause line 6 to be assigned
statement syntax because comments are considered
to be syntactic whitespace, which are ignored when
analyzing code.string syntax.label syntax.block-open as well as statement
syntax. A block-open syntactic element doesn't
have an anchor position, since it always appears with another
syntactic element which does have one.cpp-macro syntax in addition to the normal
syntactic symbols (statement-block-intro and
statement, respectively). Normally
cpp-macro is configured to cancel out the normal
syntactic context to make all preprocessor directives stick to
the first column, but that's easily changed if you want
preprocessor directives to be indented like the rest of the
code. Like comment-intro, a syntactic element with
cpp-macro doesn't contain an anchor position.stream-op syntax.